﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
//liberías que uso
using Librerias;

namespace eCampusWeb
{
    public partial class Mensajes : System.Web.UI.Page
    {
        ENMensaje men;
        
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Request.Form["__EVENTTARGET"] != null &&
                Request.Form["__EVENTTARGET"] == "BORRAR")
            {
                Borrar(Convert.ToInt32(Request.Form["__EVENTARGUMENT"]));
            }


            //Apagamos cosas
            ButtonNuevo.Visible = false;
            //DropDownListAcciones.Visible = false;
            DropDownListBandeja.Visible = false;
            lbAviso.Visible = false;
            gvMensajes.Visible = false;


            HyperLinkFieldUrlEncodeHack(gvMensajes);

            try
            {
                string quienEs;

                if (Session["correo"].ToString() != "")
                {
                    quienEs = Session["correo"].ToString();

                    men = new ENMensaje(quienEs);

                    ///Veo a ver quien accede a la página
                    int tipo;
                    tipo = Convert.ToInt32(Session["tipo"]);

                    ///Cargo los datos en consecuencia
                    cargaDatos(tipo);
                }
                else
                    {
                        cargaDatos(0); //Es invitado
                    }
            }
            catch(Exception)
            {
            }
            

        }

        public static void HyperLinkFieldUrlEncodeHack(GridView gridView)
        {
            if (gridView == null)
            {
                return;
            }
            gridView.RowDataBound += delegate(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType != DataControlRowType.DataRow)
                {
                    return;
                }
                for (int i = 0; i < gridView.Columns.Count; i++)
                {
                    DataControlField field = gridView.Columns[i];
                    if (field is HyperLinkField)
                    {
                        TableCell td = e.Row.Cells[i];
                        if (td.Controls.Count > 0 && td.Controls[0] is HyperLink)
                        {
                            HyperLink hyperLink = (HyperLink)td.Controls[0];
                            HyperLinkField hyperLinkField = (HyperLinkField)field;
                            if (!String.IsNullOrEmpty(hyperLinkField.DataNavigateUrlFormatString))
                            {
                                string[] dataUrlFields =
                                  new string[hyperLinkField.DataNavigateUrlFields.Length];
                                for (int j = 0; j < dataUrlFields.Length; j++)
                                {
                                    object obj = DataBinder.Eval(e.Row.DataItem,
                                        hyperLinkField.DataNavigateUrlFields[j]);
                                    dataUrlFields[j] = HttpUtility.UrlEncode(
                                        (obj == null ? "" : obj.ToString()));
                                }
                                hyperLink.NavigateUrl = String.Format(
                                    hyperLinkField.DataNavigateUrlFormatString, dataUrlFields);
                            }
                        }
                    }
                }
            };
        }

         private void cargaDatos(int invitado)
        {
            switch (invitado)
            {
                case 1:
                case 2:
                    ButtonNuevo.Visible = true;
                    //DropDownListAcciones.Visible = true;
                    DropDownListBandeja.Visible = true;
                    gvMensajes.Visible = true;

                     if (DropDownListBandeja.SelectedIndex == 0)//Muestro bandeja de entrada
                     {
                           gvMensajes.DataSource = men.BandejaEntrada();
                           gvMensajes.DataBind();
                     }

                     if (DropDownListBandeja.SelectedIndex == 1)
                     {
                           gvMensajes.Columns[2].Visible = false;
                           gvMensajes.DataSource = men.MensajesEnviados();
                           gvMensajes.DataBind();
                     }
                     break;
                case 0:
                default:
                     lbAviso.Text = "¡Oppss! Debe registrarse para acceder a Mensajes";
                     lbAviso.Visible = true;
                     break;
            }
        }

         protected void gvMensajes_PageIndexChanging(object sender, GridViewPageEventArgs e)
         {
             try
             {
                 this.gvMensajes.PageIndex = e.NewPageIndex;
                 this.gvMensajes.DataSource = Session["View"].ToString();
             }
             catch (Exception)
             {

             }
         }

         protected void ButtonNuevo_Click(object sender, EventArgs e)
         {
             Response.Redirect("~/MensajeCrear.aspx");
         }

         protected void Borrar(int id)
         {
             try
             {
                 new ENMensaje(Session["correo"].ToString()).Eliminar(id);

                 cargaDatos(int.Parse(Session["tipo"].ToString()));
             }
             catch { }
         }

    }
}